﻿#ifndef DAABSTRACTPLUGIN_H
#define DAABSTRACTPLUGIN_H
#include <QtPlugin>
#include "DAPluginSupportGlobal.h"
namespace DA
{
/**
 * @brief 所有插件的基类
 *
 * 所有支持插件的库都需要实现以下导出函数
 * DAAbstractPlugin* plugin_create();
 * void plugin_destory(DAAbstractPlugin* p);
 */
class DAPLUGINSUPPORT_API DAAbstractPlugin
{
public:
    DAAbstractPlugin()
    {
    }
    virtual ~DAAbstractPlugin()
    {
    }

    //插件id
    virtual QString getIID() const = 0;

    /**
     * @brief 插件名
     * @return
     */
    virtual QString getName() const = 0;

    /**
     * @brief 插件版本
     * @return
     */
    virtual QString getVersion() const = 0;

    /**
     * @brief 插件描述
     * @return
     */
    virtual QString getDescription() const = 0;
};
}  // namespace DA
//下面是插件导出的函数指针
typedef DA::DAAbstractPlugin* (*FP_PluginCreate)();
typedef void (*FP_PluginDestory)(DA::DAAbstractPlugin*);

#endif  // FCABSTRACTPLUGIN_H
